#pragma once

#include "molecular_atom.h"
#include "models/atom_interface/ai_dwm_op.h"

class DwmOp :
    public M::Atom
{
public:
    DwmOp();
    virtual ~DwmOp();

    virtual M::String name() const { return PAN_DWM_OP; }
    virtual bool OnEvent(const M::AtomEndPoint &oSrcAtom, int nEventId, void *pParams);
    virtual bool OnExecute(const M::AtomEndPoint &oSrcAtom, int nFuncId, void *pParams, void *pIOParams);

protected:
    bool RetrieveInfo();
    void ResetInfo();

    bool OnGetSystemDwmInfo(SystemDwmInfo *pKey);
    bool OnGetWindowDwmAttrList(WindowDwmAttrList *pKey);
    bool OnSetWindowDwmAttrList(WindowDwmAttrList *pKey);
    bool OnExtendFrameIntoChildArea(MARGINS *pMargins);
};